<?php
class News_ControlPanelController extends XPHP_Controller
{
    public function _init ()
    {
        //Load layout mặc định cho các action
        $this->loadLayout('ControlPanel/XAdmin');
    }
    #[Authorize(roles = 'Administrator')]
    public function indexAction ()
    {
        //Lấy ra toàn bộ danh sách các danh mục dạng cây làm bộ lọc
        $categoriesSelectList = array();
        $categoriesSelectList[0] = "Tất cả";
        $categoryMode = new Areas_News_Models_NewsCategory();
        $categories = $categoryMode->getCategoryTree();
        foreach ($categories as $category) {
            $categoriesSelectList[$category->id] = $category->name;
        }
        $this->view->categoriesSelectList = $categoriesSelectList;
        //Filter
        $options = array();
        if ($this->hasParams('category_id') && $this->params['category_id'] != "" &&
         $this->params['category_id'] != "0")
            $options['category_id'] = $this->params['category_id'];
             //Lấy ra toàn bộ danh sách các tin tức với options
        $model = new Areas_News_Models_News();
        $news = $model->getNews($options);
        //Delete url
        $deleteUrl = $this->url->action("delete");
        //Xử lý
        for ($i = 0; $i < count($news); $i ++) {
            //Lấy ra tên danh mục cho tin tức
            $newsCatModel = new Areas_News_Models_NewsCategory();
            $cat = $newsCatModel->getCategories(
            array('id' => $news[$i]->category_id));
            if (isset($cat[0]))
                $news[$i]->category_name = $cat[0]->name;
            else
                $news[$i]->category_name = "";
                 //Chuyển định dạng ngày tháng năm
            $news[$i]->date_create = XPHP_Date::isTheDay(
            $news[$i]->date_create);
            //Edir url
            $editUrl = $this->url->action("edit", 
            array($news[$i]->id));
            //Thêm cột lựa chọn hành động
            $news[$i]->action = "<a href='{$editUrl}' class='button ico-btn ico-text-edit tool-tip' title='{$news[$i]->title}' rel='edit'>
            					</a>
            					<a href='{$deleteUrl}' class='button ico-btn ico-text-trash tool-tip' item='{$news[$i]->title}' title='{$news[$i]->title}' 
            					data='{$news[$i]->id}' rel='delete'>
            					</a>";
        }
        //Trả về view
        $this->view->news = $news;
        return $this->view();
    }
    #[Authorize(roles = 'Administrator')]
    public function createAction ()
    {
        $model = new Areas_News_Models_NewsCategory();
        //Lấy ra danh sách danh mục theo dạng cây
        $categoryTree = $model->getCategoryTree();
        //Lấy ra mảng đưa vào hộp select
        $options = array();
        $options[0] = "Danh mục gốc";
        foreach ($categoryTree as $cat) {
            $options[$cat->id] = $cat->name;
        }
        //Assign sang view
        $this->view->categoryOptions = $options;
        return $this->view();
    }
    #[Authorize(roles = 'Administrator')]
    public function createPost (Areas_News_Models_News $mode)
    {
        if ($this->model->validate()) {
            $this->model->date_create = XPHP_Date::toTime(date("H:i:s d/m/y"));
            if ($this->model->insert())
                return $this->json(
                array('success' => true, 
                'message' => 'Thêm tin tức mới thành công'));
            else
                return $this->json(
                array('success' => false, 
                'message' => 'Xảy ra lỗi khi thêm tin tức mới'));
        } else
            return $this->json(
            array('success' => false, 
            'message' => 'Tin tức nhập vào chưa hợp lệ'));
    }
    #[Authorize(roles = 'Administrator')]
    public function editAction ()
    {
        $catModel = new Areas_News_Models_NewsCategory();
        //Lấy ra danh sách danh mục theo dạng cây
        $categoryTree = $catModel->getCategoryTree();
        //Lấy ra mảng đưa vào hộp select
        $options = array();
        $options[0] = "Danh mục gốc";
        foreach ($categoryTree as $cat) {
            $options[$cat->id] = $cat->name;
        }
        //Assign sang view
        $this->view->categoryOptions = $options;
        $model = new Areas_News_Models_News($this->params[0]);
        return $this->view($model);
    }
    #[Authorize(roles = 'Administrator')]
    public function editPost (Areas_News_Models_News $mode)
    {
        if ($this->model->validate()) {
            if ($this->model->update())
                return $this->json(
                array('success' => true, 
                'message' => 'Cập nhật tin tức thành công'));
            else
                return $this->json(
                array('success' => false, 
                'message' => 'Xảy ra lỗi khi cập nhật tin tức'));
        } else
            return $this->json(
            array('success' => false, 
            'message' => 'Các thông tin nhập vào chưa hợp lệ'));
    }
    #[Authorize(roles = 'Administrator')]
    public function deletePost (Areas_News_Models_News $model)
    {
        if ($this->model->delete()) {
            return $this->json(
            array('success' => true, 'message' => 'Xóa tin tức thành công'));
        } else
            return $this->json(
            array('success' => false, 
            'message' => 'Xảy ra lỗi khi cố xóa tin tức'));
    }
}